    /*1.类和对象
    类是用来描述对象的
    对象是一个真正存在的实体
    面向过程编程：以 **“过程”为核心，关注“怎么做”**，通过函数（或过程）按步骤实现功能.
    面向对象编程：以 **“对象”为核心，关注“谁来做”**，将数据和操作数据的方法封装成对象，通过对象间的交互完成功能



    2类的定义；class 类名{
                   字段(属性) 或者 成员变量（定义在类当中方法外面）；
                   行为 或者 成员方法方法；
                                  }

    3.类名注意采用大驼峰定义
    成员前写法统一为public
    此处写的方法不带 static 关键字
    一个Java文件建议只有一个类
    public修饰的类必须要和文件名一样(WangYuLin只是一个用 class 修饰的普通类（不是 public 修饰），所以它的类名不需要和文件名 Test9.java 一致 。
    修改public修饰的类的名称步骤src---Test9展开---WangYuLin---右键---Refactor---Rename



//4.定义一个王瑜霖类
  class WangYuLin{
      public String name;
      public int  high;
      public int  weight;

      public void eat(){
        System.out.println(name+"小鸟胃不爱吃饭");
    }
}
public class Test9 {
    public static void main(String[] args) {
        WangYuLin wangYuLin=new WangYuLin();类型创建对象的过程，称为类的实例化，在java中采用new关键字，配合类名来实例化对象。
        wangYuLin.name="王瑜霖";//赋值
        System.out.println(wangYuLin.name);wangYulin---.---.sout回车
        wangYuLin.eat();

        同一个类可以通过new关键字实例化多个对象
        WangYuLin wangYuLin2=new WangYuLin();
        wangYuLin2.name="王瑜霖小名娇娇爱生气不爱睡爱熬夜";
        System.out.println(wangYuLin2.name);
        wangYuLin2.weight=100;
        System.out.println(wangYuLin2.weight);
    }
}
  public class Test9 {
      public int year;
      public int month;
      public int day;
      public void set(int y,int m,int d){
            year=y;
            month=m;
            day=d;
      }
      public void setDown(){
          System.out.println(year+"年"+month+"月"+day+"日");
      }
    public static void main1(String[] args) {
        Test9 test9=new Test9();
        test9.set(2004,04,18);
        test9.setDown();
    }
}*/
  //5.this的引用
  //作用：1.避免形参名不小心与成员变量名相同报错。
  //2.不知道打印的是那个对象的数据。
  //3.只能在成员方法中使用，不能在静态方法上使用。
/*  public class Test9 {
      public int age;
      public int weight;
      public void setdown(int age,int weight){
          this.age=age;
          this.weight= weight;
      }
      public void printset(){
          System.out.println(age+"岁"+weight+"斤");
      }

        public static void main5(String[] args) {
            Test9 test9=new Test9();
            test9.setdown(18,98);//谁调用了方法this就代表了谁
            test9.printset();

            Test9 test92=new Test9();
            test92.setdown(19,108);//谁调用了方法this就代表了谁
            test92.printset();
        }
}*/
///6.构造方法
// 在Java方法内部定义一个局部变量时，必须要初始化，否则会编译失败。但是成员变量不用输出的是默认值public所修饰的
    // 构造方法：名字与类名相同，没有返回值类型，设置为void也不行 // 一般情况下使用public修饰
    // 在创建对象时由编译器自动调用，并且在对象的生命周期内只调用一次
    //名字相同，参数列表不同，因此构成了方法重载
    //实例化可以通过构造方法进行初始化
    public class Test9{
        public int year;
        public int month;
        public  Test9(){
            System.out.println("无参构造方法");
        }
        public Test9(int year,int  month){
            this.year=year;
            this.month=month;
            System.out.println("有参构造方法");
        }
        public static void main(String[] args) {
            Test9 test9=new Test9();//因为Test9()调用了构造方法
            Test9 test91=new Test9(2000,8);
        }
    }
